home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the 3D Game Programming Gurus / gurus.iso / DirectX / dx9sdkcp.exe / SDK (C++) / Include / DShowIDL / bdaiface.idl < prev    next >
Encoding:
Text File  |  2002-11-12  |  24.1 KB  |  1,014 lines

  1. //------------------------------------------------------------------------------
  2. // File: BDAIface.idl
  3. //
  4. // Desc: This file defines the Ring 3 BDA interfaces that are common to
  5. //       all BDA network and device types.
  6. //
  7. //       The interfaces specific to a particular Network Type or filter
  8. //       implementation are defined in a separate include file for that
  9. //       Network Type or filter implementation.
  10. //
  11. // Copyright (c) 1999 - 2002, Microsoft Corporation.  All rights reserved.
  12. //------------------------------------------------------------------------------
  13.  
  14.  
  15. //---------------------------------------------------------------------
  16. // IUnknown import idl
  17. //---------------------------------------------------------------------
  18. #ifndef DO_NO_IMPORTS
  19. import "unknwn.idl";
  20. import "strmif.idl";
  21. import "BdaTypes.h";
  22. #endif
  23.  
  24. //---------------------------------------------------------------------
  25. //
  26. //  IBDA_NetworkProvider interface
  27. //
  28. //  Implemented by a BDA Network Provider
  29. //
  30. //      Used by a BDA device filter to register itself with
  31. //      a Network Provider and query information about the
  32. //      the current tuning request.
  33. //
  34. //---------------------------------------------------------------------
  35. [
  36.     object,
  37.     uuid(fd501041-8ebe-11ce-8183-00aa00577da2),
  38.     pointer_default(unique)
  39. ]
  40.  
  41. interface IBDA_NetworkProvider : IUnknown
  42. {
  43.  
  44.     HRESULT
  45.     PutSignalSource (
  46.         [in] ULONG          ulSignalSource
  47.         );
  48.  
  49.  
  50.     HRESULT
  51.     GetSignalSource (
  52.         [in, out] ULONG *   pulSignalSource
  53.         );
  54.  
  55.     HRESULT
  56.     GetNetworkType (
  57.         [in, out] GUID *    pguidNetworkType
  58.         );
  59.  
  60.     HRESULT
  61.     PutTuningSpace (
  62.         [in] REFGUID        guidTuningSpace
  63.         );
  64.  
  65.     HRESULT
  66.     GetTuningSpace (
  67.         [in, out] GUID *    pguidTuingSpace
  68.         );
  69.  
  70.     HRESULT
  71.     RegisterDeviceFilter (
  72.         [in]  IUnknown *    pUnkFilterControl,
  73.         [in, out] ULONG *   ppvRegisitrationContext
  74.         );
  75.  
  76.     HRESULT
  77.     UnRegisterDeviceFilter (
  78.         [in] ULONG          pvRegistrationContext
  79.         );
  80.  
  81. }
  82.  
  83.  
  84. //---------------------------------------------------------------------
  85. //
  86. //  IBDA_EthernetFilter interface
  87. //
  88. //  Implemented by a BDA Network Provider
  89. //
  90. //      Used by an Ethernet Network Data Sink filter (eg. IPSink) to
  91. //      request that the Network Provider make its best effort to tune
  92. //      to the stream(s) on which a list of Ethernet multicast addresses
  93. //      may be transmitted.
  94. //
  95. //      Addresses in the address list are byte aligned in Network order.
  96. //      UlcbAddresses will always be an integer multiple of the
  97. //      size of an ethernet address.
  98. //
  99. //---------------------------------------------------------------------
  100. [
  101.     object,
  102.     uuid(71985F43-1CA1-11d3-9CC8-00C04F7971E0),
  103.     pointer_default(unique)
  104. ]
  105.  
  106. interface IBDA_EthernetFilter : IUnknown
  107. {
  108.     HRESULT
  109.     GetMulticastListSize (
  110.         [in, out] ULONG *                   pulcbAddresses
  111.         );
  112.  
  113.     HRESULT
  114.     PutMulticastList (
  115.         [in] ULONG                          ulcbAddresses,
  116.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  117.         );
  118.  
  119.     HRESULT
  120.     GetMulticastList (
  121.         [in, out] ULONG *                       pulcbAddresses,
  122.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  123.         );
  124.  
  125.     HRESULT
  126.     PutMulticastMode (
  127.         [in] ULONG      ulModeMask
  128.         );
  129.  
  130.     HRESULT
  131.     GetMulticastMode (
  132.         [out] ULONG *   pulModeMask
  133.         );
  134.  
  135. }
  136.  
  137.  
  138.  
  139. //---------------------------------------------------------------------
  140. //
  141. //  IBDA_IPV4Filter interface
  142. //
  143. //  Implemented by a BDA Network Provider
  144. //
  145. //      Used by an IPv4 Network Data Sink filter to request
  146. //      that the Network Provider make its best effort to tune
  147. //      to the stream(s) on which a list of IPv4 multicast addresses
  148. //      may be transmitted.
  149. //
  150. //      Addresses in the address list are byte aligned in Network order.
  151. //      UlcbAddresses will always be an integer multiple of the
  152. //      size of an IPv4 address.
  153. //
  154. //---------------------------------------------------------------------
  155. [
  156.     object,
  157.     uuid(71985F44-1CA1-11d3-9CC8-00C04F7971E0),
  158.     pointer_default(unique)
  159. ]
  160.  
  161. interface IBDA_IPV4Filter : IUnknown
  162. {
  163.  
  164.     HRESULT
  165.     GetMulticastListSize (
  166.         [in, out] ULONG *                   pulcbAddresses
  167.         );
  168.  
  169.     HRESULT
  170.     PutMulticastList (
  171.         [in] ULONG                          ulcbAddresses,
  172.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  173.         );
  174.  
  175.     HRESULT
  176.     GetMulticastList (
  177.         [in, out] ULONG *                       pulcbAddresses,
  178.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  179.         );
  180.  
  181.     HRESULT
  182.     PutMulticastMode (
  183.         [in] ULONG  ulModeMask
  184.         );
  185.  
  186.     HRESULT
  187.     GetMulticastMode (
  188.         [out] ULONG* pulModeMask
  189.         );
  190. }
  191.  
  192.  
  193.  
  194. //---------------------------------------------------------------------
  195. //
  196. //  IBDA_IPV6Filter interface
  197. //
  198. //  Implemented by a BDA Network Provider
  199. //
  200. //      Used by an IPv6 Network Data Sink filter to request
  201. //      that the Network Provider make its best effort to tune
  202. //      to the stream(s) on which a list of IPv6 multicast addresses
  203. //      may be transmitted.
  204. //
  205. //      Addresses in the address list are byte aligned in Network order.
  206. //      UlcbAddresses will always be an integer multiple of the
  207. //      size of an IPv6 address.
  208. //
  209. //---------------------------------------------------------------------
  210. [
  211.     object,
  212.     uuid(E1785A74-2A23-4fb3-9245-A8F88017EF33),
  213.     pointer_default(unique)
  214. ]
  215.  
  216. interface IBDA_IPV6Filter : IUnknown
  217. {
  218.  
  219.     HRESULT
  220.     GetMulticastListSize (
  221.         [in, out] ULONG *                   pulcbAddresses
  222.         );
  223.  
  224.     HRESULT
  225.     PutMulticastList (
  226.         [in] ULONG                          ulcbAddresses,
  227.         [in, size_is(ulcbAddresses)] BYTE   pAddressList []
  228.         );
  229.  
  230.     HRESULT
  231.     GetMulticastList (
  232.         [in, out] ULONG *                       pulcbAddresses,
  233.         [out, size_is(*pulcbAddresses)] BYTE    pAddressList []
  234.         );
  235.  
  236.     HRESULT
  237.     PutMulticastMode (
  238.         [in] ULONG  ulModeMask
  239.         );
  240.  
  241.     HRESULT
  242.     GetMulticastMode (
  243.         [out] ULONG* pulModeMask
  244.         );
  245. }
  246.  
  247.  
  248.  
  249. //---------------------------------------------------------------------
  250. //
  251. //  IBDA_DeviceControl interface
  252. //
  253. //  Implemented by a BDA Device Filter
  254. //
  255. //      Used by the Network Provider to commit a series of changes
  256. //      on a BDA device filter.  The device filter validates and
  257. //      accumulates all changes requested after StartChanges().  It
  258. //      effects the accumulated list of changes when CommitChanges() is
  259. //      called.
  260. //
  261. //---------------------------------------------------------------------
  262. [
  263.     object,
  264.     uuid(FD0A5AF3-B41D-11d2-9C95-00C04F7971E0),
  265.     pointer_default(unique)
  266. ]
  267.  
  268. interface IBDA_DeviceControl : IUnknown
  269. {
  270.     HRESULT
  271.     StartChanges (
  272.         void
  273.         );
  274.  
  275.     HRESULT
  276.     CheckChanges (
  277.         void
  278.         );
  279.  
  280.     HRESULT
  281.     CommitChanges (
  282.         void
  283.         );
  284.  
  285.     HRESULT
  286.     GetChangeState (
  287.         [in, out] ULONG *   pState
  288.         );
  289.  
  290. }
  291.  
  292.  
  293.  
  294. //---------------------------------------------------------------------
  295. //
  296. //  IBDA_PinControl interface
  297. //
  298. //  Implemented by a BDA Device Filter's Pin
  299. //
  300. //      Used by the Network Provider to determine the BDA PinID and
  301. //      PinType on a BDA Filter's Pin
  302. //
  303. //---------------------------------------------------------------------
  304. [
  305.     object,
  306.     uuid(0DED49D5-A8B7-4d5d-97A1-12B0C195874D),
  307.     pointer_default(unique)
  308. ]
  309.  
  310. interface IBDA_PinControl : IUnknown
  311. {
  312.     HRESULT
  313.     GetPinID (
  314.         [in, out] ULONG *   pulPinID
  315.         );
  316.  
  317.     HRESULT
  318.     GetPinType (
  319.         [in, out] ULONG *   pulPinType
  320.         );
  321.  
  322.     HRESULT
  323.     RegistrationContext (
  324.         [in, out] ULONG *   pulRegistrationCtx
  325.         );
  326. }
  327.  
  328.  
  329.  
  330. //---------------------------------------------------------------------
  331. //
  332. //  IBDA_SignalProperties interface
  333. //
  334. //  Implemented by a BDA Device Filter
  335. //
  336. //      BDA Signal Properties is used by a Network Provider to inform
  337. //      a BDA Device Filter about the current tuning request.  The
  338. //      Network Provider will call the Put functions when the BDA
  339. //      device is first registered with the Network Provider and whenever
  340. //      the current tuning request is modified.
  341. //
  342. //---------------------------------------------------------------------
  343. [
  344.     object,
  345.     uuid(D2F1644B-B409-11d2-BC69-00A0C9EE9E16),
  346.     pointer_default(unique)
  347. ]
  348.  
  349. interface IBDA_SignalProperties : IUnknown
  350. {
  351.     HRESULT
  352.     PutNetworkType (
  353.         [in] REFGUID        guidNetworkType
  354.         );
  355.  
  356.     HRESULT
  357.     GetNetworkType (
  358.         [in, out] GUID *    pguidNetworkType
  359.         );
  360.  
  361.     HRESULT
  362.     PutSignalSource (
  363.         [in] ULONG          ulSignalSource
  364.         );
  365.  
  366.     HRESULT
  367.     GetSignalSource (
  368.         [in, out] ULONG *   pulSignalSource
  369.         );
  370.  
  371.     HRESULT
  372.     PutTuningSpace (
  373.         [in] REFGUID        guidTuningSpace
  374.         );
  375.  
  376.     HRESULT
  377.     GetTuningSpace (
  378.         [in, out] GUID *    pguidTuingSpace
  379.         );
  380. }
  381.  
  382.  
  383. //---------------------------------------------------------------------
  384. //
  385. //  IBDA_SignalStatistics interface
  386. //
  387. //  Implemented by a BDA Control Node
  388. //
  389. //      A BDA Control Node may return these properties to describe
  390. //      the condition of a signal that is being received.
  391. //      
  392. //      
  393. //      
  394. //
  395. //---------------------------------------------------------------------
  396. [
  397.     object,
  398.     uuid(1347D106-CF3A-428a-A5CB-AC0D9A2A4338),
  399.     pointer_default(unique)
  400. ]
  401.  
  402. interface IBDA_SignalStatistics : IUnknown
  403. {
  404.     HRESULT
  405.     put_SignalStrength (
  406.         [in] LONG           lDbStrength
  407.         );
  408.     
  409.     HRESULT
  410.     get_SignalStrength (
  411.         [in, out] LONG *    plDbStrength
  412.         );
  413.     
  414.     HRESULT
  415.     put_SignalQuality (
  416.         [in] LONG           lPercentQuality
  417.         );
  418.     
  419.     HRESULT
  420.     get_SignalQuality (
  421.         [in, out] LONG *    plPercentQuality
  422.         );
  423.     
  424.     HRESULT
  425.     put_SignalPresent (
  426.         [in] BOOLEAN        fPresent
  427.         );
  428.     
  429.     HRESULT
  430.     get_SignalPresent (
  431.         [in, out] BOOLEAN * pfPresent
  432.         );
  433.     
  434.     HRESULT
  435.     put_SignalLocked (
  436.         [in] BOOLEAN        fLocked
  437.         );
  438.     
  439.     HRESULT
  440.     get_SignalLocked (
  441.         [in, out] BOOLEAN * pfLocked
  442.         );
  443.     
  444.     HRESULT
  445.     put_SampleTime (
  446.         [in] LONG           lmsSampleTime
  447.         );
  448.     
  449.     HRESULT
  450.     get_SampleTime (
  451.         [in, out] LONG *    plmsSampleTime
  452.         );
  453. }
  454.  
  455.  
  456. //---------------------------------------------------------------------
  457. //
  458. //  IBDA_Topology interface
  459. //
  460. //  Implemented by a BDA Device Filter
  461. //
  462. //      Used by the Network Provider to query a BDA Device Filter's
  463. //      possible topologies (template topology) and to configure
  464. //      the device with an appropriate topology for the current
  465. //      tuning request.  It is also used to get an IUnknown to
  466. //      a control node which may be used to set specific tuning
  467. //      information.
  468. //
  469. //---------------------------------------------------------------------
  470. [
  471.     object,
  472.     uuid(79B56888-7FEA-4690-B45D-38FD3C7849BE),
  473.     pointer_default(unique)
  474. ]
  475.  
  476. interface IBDA_Topology : IUnknown
  477. {
  478.     HRESULT
  479.     GetNodeTypes (
  480.         [in, out] ULONG *                           pulcNodeTypes,
  481.         [in]  ULONG                                 ulcNodeTypesMax,
  482.         [in, out, size_is (ulcNodeTypesMax)] ULONG  rgulNodeTypes[]
  483.         );
  484.         
  485.     HRESULT
  486.     GetNodeDescriptors (
  487.         [in, out] ULONG *   ulcNodeDescriptors,
  488.         [in]  ULONG         ulcNodeDescriptorsMax,
  489.         [in, out, size_is (ulcNodeDescriptorsMax)] BDANODE_DESCRIPTOR   rgNodeDescriptors[]
  490.         );
  491.  
  492.     HRESULT
  493.     GetNodeInterfaces (
  494.         [in]  ULONG                                     ulNodeType,
  495.         [in, out] ULONG *                               pulcInterfaces,
  496.         [in]  ULONG                                     ulcInterfacesMax,
  497.         [in, out, size_is (ulcInterfacesMax)] GUID      rgguidInterfaces[]
  498.         );
  499.  
  500.     HRESULT
  501.     GetPinTypes (
  502.         [in, out] ULONG *                           pulcPinTypes,
  503.         [in]  ULONG                                 ulcPinTypesMax,
  504.         [in, out, size_is (ulcPinTypesMax)] ULONG   rgulPinTypes[]
  505.         );
  506.  
  507.     HRESULT
  508.     GetTemplateConnections (
  509.         [in, out] ULONG *                       pulcConnections,
  510.         [in]  ULONG                             ulcConnectionsMax,
  511.         [in, out, size_is (ulcConnectionsMax)] BDA_TEMPLATE_CONNECTION    rgConnections[]
  512.         );
  513.  
  514.     HRESULT
  515.     CreatePin (
  516.         [in]  ULONG         ulPinType,
  517.         [in, out] ULONG *   pulPinId
  518.         );
  519.  
  520.     HRESULT
  521.     DeletePin (
  522.         [in] ULONG      ulPinId
  523.         );
  524.  
  525.     HRESULT
  526.     SetMediaType (
  527.         [in]  ULONG             ulPinId,
  528.         [in]  AM_MEDIA_TYPE *   pMediaType
  529.         );
  530.  
  531.     HRESULT
  532.     SetMedium (
  533.         [in] ULONG          ulPinId,
  534.         [in] REGPINMEDIUM * pMedium
  535.         );
  536.  
  537.     HRESULT
  538.     CreateTopology (
  539.         [in] ULONG ulInputPinId,
  540.         [in] ULONG ulOutputPinId
  541.         );
  542.  
  543.     HRESULT
  544.     GetControlNode (
  545.         [in] ULONG              ulInputPinId,
  546.         [in] ULONG              ulOutputPinId,
  547.         [in] ULONG              ulNodeType,
  548.         [in, out] IUnknown **   ppControlNode
  549.         );
  550. }
  551.  
  552. //---------------------------------------------------------------------
  553. // IBDA_VoidTransform interface
  554. //---------------------------------------------------------------------
  555. [
  556.     object,
  557.     uuid(71985F46-1CA1-11d3-9CC8-00C04F7971E0),
  558.     pointer_default(unique)
  559. ]
  560.  
  561. interface IBDA_VoidTransform : IUnknown
  562. {
  563.     HRESULT
  564.     Start (
  565.         void
  566.         );
  567.  
  568.     HRESULT
  569.     Stop (
  570.         void
  571.         );
  572.  
  573. }
  574.  
  575. //---------------------------------------------------------------------
  576. // IBDA_NullTransform interface
  577. //---------------------------------------------------------------------
  578. [
  579.     object,
  580.     uuid(DDF15B0D-BD25-11d2-9CA0-00C04F7971E0),
  581.     pointer_default(unique)
  582. ]
  583.  
  584. interface IBDA_NullTransform : IUnknown
  585. {
  586.     HRESULT
  587.     Start (
  588.         void
  589.         );
  590.  
  591.     HRESULT
  592.     Stop (
  593.         void
  594.         );
  595.  
  596. }
  597.  
  598.  
  599. //---------------------------------------------------------------------
  600. // IBDA_FrequencyFilter interface
  601. //---------------------------------------------------------------------
  602. [
  603.     object,
  604.     uuid(71985F47-1CA1-11d3-9CC8-00C04F7971E0),
  605.     pointer_default(unique)
  606. ]
  607.  
  608. interface IBDA_FrequencyFilter : IUnknown
  609. {
  610.     HRESULT
  611.     put_Autotune (
  612.         [in] ULONG                  ulTransponder
  613.         );
  614.     
  615.     HRESULT
  616.     get_Autotune (
  617.         [in, out] ULONG *           pulTransponder
  618.         );
  619.  
  620.     HRESULT
  621.     put_Frequency (
  622.         [in] ULONG                  ulFrequency
  623.         );
  624.  
  625.     HRESULT
  626.     get_Frequency (
  627.         [in, out] ULONG *           pulFrequency
  628.         );
  629.  
  630.     HRESULT
  631.     put_Polarity (
  632.         [in] Polarisation           Polarity
  633.         );
  634.  
  635.     HRESULT
  636.     get_Polarity (
  637.         [in, out] Polarisation *    pPolarity
  638.         );
  639.  
  640.     HRESULT
  641.     put_Range (
  642.         [in] ULONG                  ulRange
  643.         );
  644.  
  645.     HRESULT
  646.     get_Range (
  647.         [in, out] ULONG *           pulRange
  648.         );
  649.  
  650.     HRESULT
  651.     put_Bandwidth (
  652.         [in] ULONG                  ulBandwidth
  653.         );
  654.  
  655.     HRESULT
  656.     get_Bandwidth (
  657.         [in, out] ULONG *           pulBandwidth
  658.         );
  659.  
  660.     HRESULT
  661.     put_FrequencyMultiplier (
  662.         [in] ULONG                  ulMultiplier
  663.         );
  664.  
  665.     HRESULT
  666.     get_FrequencyMultiplier (
  667.         [in, out] ULONG *           pulMultiplier
  668.         );
  669. }
  670.  
  671.  
  672. //---------------------------------------------------------------------
  673. // IBDA_LNBInfo interface
  674. //---------------------------------------------------------------------
  675. [
  676.     object,
  677.     uuid(992CF102-49F9-4719-A664-C4F23E2408F4),
  678.     pointer_default(unique)
  679. ]
  680.  
  681. interface IBDA_LNBInfo : IUnknown
  682. {
  683.     HRESULT
  684.     put_LocalOscilatorFrequencyLowBand (
  685.         [in] ULONG          ulLOFLow
  686.         );
  687.  
  688.     HRESULT
  689.     get_LocalOscilatorFrequencyLowBand (
  690.         [in, out] ULONG *   pulLOFLow
  691.         );
  692.  
  693.     HRESULT
  694.     put_LocalOscilatorFrequencyHighBand (
  695.         [in] ULONG          ulLOFHigh
  696.         );
  697.  
  698.     HRESULT
  699.     get_LocalOscilatorFrequencyHighBand (
  700.         [in, out] ULONG *   pulLOFHigh
  701.         );
  702.  
  703.     HRESULT
  704.     put_HighLowSwitchFrequency (
  705.         [in] ULONG          ulSwitchFrequency
  706.         );
  707.  
  708.     HRESULT
  709.     get_HighLowSwitchFrequency (
  710.         [in, out] ULONG *   pulSwitchFrequency
  711.         );
  712. }
  713.  
  714.  
  715. //---------------------------------------------------------------------
  716. // IBDA_AutoDemodulate interface
  717. //---------------------------------------------------------------------
  718. [
  719.     object,
  720.     uuid(DDF15B12-BD25-11d2-9CA0-00C04F7971E0),
  721.     pointer_default(unique)
  722. ]
  723.  
  724. interface IBDA_AutoDemodulate : IUnknown
  725. {
  726.     HRESULT
  727.     put_AutoDemodulate (
  728.         void
  729.         );
  730. }
  731.  
  732. //---------------------------------------------------------------------
  733. // IBDA_DigitalDemodulator interface
  734. //---------------------------------------------------------------------
  735. [
  736.     object,
  737.     uuid(EF30F379-985B-4d10-B640-A79D5E04E1E0),
  738.     pointer_default(unique)
  739. ]
  740.  
  741. interface IBDA_DigitalDemodulator : IUnknown
  742. {
  743.     HRESULT
  744.     put_ModulationType (
  745.         [in] ModulationType *   pModulationType
  746.         );
  747.  
  748.     HRESULT
  749.     get_ModulationType (
  750.         [in, out] ModulationType *  pModulationType
  751.         );
  752.  
  753.     HRESULT
  754.     put_InnerFECMethod (
  755.         [in] FECMethod *    pFECMethod
  756.         );
  757.  
  758.     HRESULT
  759.     get_InnerFECMethod (
  760.         [in, out] FECMethod *   pFECMethod
  761.         );
  762.  
  763.     HRESULT
  764.     put_InnerFECRate (
  765.         [in] BinaryConvolutionCodeRate *    pFECRate
  766.         );
  767.  
  768.     HRESULT
  769.     get_InnerFECRate (
  770.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  771.         );
  772.  
  773.     HRESULT
  774.     put_OuterFECMethod (
  775.         [in] FECMethod *    pFECMethod
  776.         );
  777.  
  778.     HRESULT
  779.     get_OuterFECMethod (
  780.         [in, out] FECMethod *   pFECMethod
  781.         );
  782.  
  783.     HRESULT
  784.     put_OuterFECRate (
  785.         [in] BinaryConvolutionCodeRate *    pFECRate
  786.         );
  787.  
  788.     HRESULT
  789.     get_OuterFECRate (
  790.         [in, out] BinaryConvolutionCodeRate *   pFECRate
  791.         );
  792.  
  793.     HRESULT
  794.     put_SymbolRate (
  795.         [in] ULONG *    pSymbolRate
  796.         );
  797.  
  798.     HRESULT
  799.     get_SymbolRate (
  800.         [in, out] ULONG *   pSymbolRate
  801.         );
  802.  
  803.     HRESULT
  804.     put_SpectralInversion (
  805.         [in] SpectralInversion *    pSpectralInversion
  806.         );
  807.  
  808.     HRESULT
  809.     get_SpectralInversion (
  810.         [in, out] SpectralInversion *   pSpectralInversion
  811.         );
  812. }
  813.  
  814. typedef enum
  815. {
  816.     KSPROPERTY_IPSINK_MULTICASTLIST,
  817.     KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  818.     KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  819.  
  820. } KSPROPERTY_IPSINK;
  821.  
  822.  
  823.  
  824. //---------------------------------------------------------------------
  825. // IBDA_IPSinkControl interface  (mutlimedia\filters.ks\ipsink)
  826. // IBDA_IPSinkInfo    interface
  827. //
  828. //  IBDA_IPSinkControl is no longer being supported for Ring3 clients.
  829. //  Use the BDA_IPSinkInfo interface instead.
  830. //---------------------------------------------------------------------
  831.  
  832. [
  833.     object,
  834.     uuid(3F4DC8E2-4050-11d3-8F4B-00C04F7971E2),
  835.     pointer_default(unique),
  836.     helpstring("Not supported - Use IBDA_IPSinkInfo instead")
  837. ]
  838. interface IBDA_IPSinkControl : IUnknown
  839. {
  840.     HRESULT GetMulticastList (
  841.                 [in, out] unsigned long *pulcbSize,
  842.                 [in, out] BYTE **pbBuffer
  843.     );
  844.  
  845.  
  846.     HRESULT GetAdapterIPAddress (
  847.                 [in,out] unsigned long *pulcbSize,
  848.                 [in,out] BYTE **pbBuffer
  849.     );
  850.  
  851. }
  852.  
  853. [
  854.     object,
  855.     uuid(A750108F-492E-4d51-95F7-649B23FF7AD7),
  856.     pointer_default(unique)
  857. ]
  858. interface IBDA_IPSinkInfo : IUnknown
  859. {
  860.     HRESULT get_MulticastList (                                             // returns  N 6-byte 802.3 IP addreses.
  861.                 [in, out] ULONG *                       pulcbAddresses,     // 6*N
  862.                 [out, size_is(*pulcbAddresses)] BYTE    **ppbAddressList    // Allocated by caller, must deallocate in callee with CoTaskMemFree()
  863.     );
  864.  
  865.     HRESULT get_AdapterIPAddress (
  866.                 [out] BSTR *pbstrBuffer
  867.     );
  868.  
  869.     HRESULT get_AdapterDescription (
  870.                 [out] BSTR *pbstrBuffer
  871.     );
  872. }
  873. //
  874. //  mpeg-2 demultiplexer-specific interfaces follow
  875. //
  876.  
  877. //---------------------------------------------------------------------
  878. // IEnumPIDMap interface
  879. //---------------------------------------------------------------------
  880.  
  881. #ifdef REMOVE_THESE
  882. typedef enum {
  883.     MEDIA_TRANSPORT_PACKET,         //  complete TS packet e.g. pass-through mode
  884.     MEDIA_ELEMENTARY_STREAM,        //  PES payloads; audio/video only
  885.     MEDIA_MPEG2_PSI,                //  PAT, PMT, CAT, Private
  886.     MEDIA_TRANSPORT_PAYLOAD         //  gathered TS packet payloads (PES packets, etc...)
  887. } MEDIA_SAMPLE_CONTENT ;
  888.  
  889. typedef struct {
  890.     ULONG                   ulPID ;
  891.     MEDIA_SAMPLE_CONTENT    MediaSampleContent ;
  892. } PID_MAP ;
  893. #endif // REMOVE_THESE
  894.  
  895. [
  896.     object,
  897.     uuid (afb6c2a2-2c41-11d3-8a60-0000f81e0e4a),
  898.     pointer_default(unique)
  899. ]
  900. interface IEnumPIDMap : IUnknown
  901. {
  902.     HRESULT
  903.     Next (
  904.         [in]                            ULONG       cRequest,
  905.         [in, out, size_is (cRequest)]   PID_MAP *   pPIDMap,
  906.         [out]                           ULONG *     pcReceived
  907.         ) ;
  908.  
  909.     HRESULT
  910.     Skip (
  911.         [in]    ULONG   cRecords
  912.         ) ;
  913.  
  914.     HRESULT
  915.     Reset (
  916.         ) ;
  917.  
  918.     HRESULT
  919.     Clone (
  920.         [out]   IEnumPIDMap **  ppIEnumPIDMap
  921.         ) ;
  922. } ;
  923.  
  924. //---------------------------------------------------------------------
  925. // IMPEG2PIDMap interface
  926. //---------------------------------------------------------------------
  927.  
  928. [
  929.     object,
  930.     uuid (afb6c2a1-2c41-11d3-8a60-0000f81e0e4a),
  931.     pointer_default(unique)
  932. ]
  933. interface IMPEG2PIDMap : IUnknown
  934. {
  935.     HRESULT
  936.     MapPID (
  937.         [in]    ULONG                   culPID,
  938.         [in]    ULONG *                 pulPID,
  939.         [in]    MEDIA_SAMPLE_CONTENT    MediaSampleContent
  940.         ) ;
  941.  
  942.     HRESULT
  943.     UnmapPID (
  944.         [in]    ULONG   culPID,
  945.         [in]    ULONG * pulPID
  946.         ) ;
  947.  
  948.     HRESULT
  949.     EnumPIDMap (
  950.         [out]   IEnumPIDMap ** pIEnumPIDMap
  951.         ) ;
  952. } ;
  953.  
  954. //---------------------------------------------------------------------
  955. // IFrequencyMap interface
  956. // Currently implemented on the TIF. The interface can be QIed on the NP
  957. //---------------------------------------------------------------------
  958.  
  959.  
  960.     [
  961.          object,
  962.      uuid(06FB45C1-693C-4ea7-B79F-7A6A54D8DEF2),
  963.      helpstring("IFrequencyMap Interface"),
  964.      pointer_default(unique),
  965.              hidden, restricted
  966.     ]
  967.  
  968.     interface IFrequencyMap : IUnknown
  969.     {
  970.     [helpstring("method get_FrequencyMapping")] 
  971.     HRESULT 
  972.     get_FrequencyMapping(
  973.                  [out] ULONG* ulCount,
  974.                  [out, size_is(1, *ulCount)] ULONG** ppulList
  975.                  );
  976.     [helpstring("method put_FrequencyMapping")] 
  977.     HRESULT 
  978.     put_FrequencyMapping(
  979.                  [in] ULONG ulCount,
  980.                  [in, size_is(ulCount)] ULONG pList[]
  981.                  );
  982.     [helpstring("method get_CountryCode")] 
  983.     HRESULT 
  984.     get_CountryCode(
  985.             [out] ULONG *pulCountryCode
  986.             );
  987.     [helpstring("method put_CountryCode")] 
  988.     HRESULT 
  989.     put_CountryCode(
  990.             [in] ULONG ulCountryCode
  991.             );
  992.  
  993.        [helpstring("method get_DefaultFrequencyMapping")]
  994.        HRESULT
  995.        get_DefaultFrequencyMapping(
  996.             [in] ULONG ulCountryCode,
  997.             [out] ULONG* pulCount,
  998.             [out, size_is(1, *pulCount)] ULONG** ppulList
  999.             );
  1000.   
  1001.  
  1002.      [helpstring("method get_CountryCodeList")]
  1003.         HRESULT
  1004.         get_CountryCodeList(
  1005.             [out] ULONG* pulCount,
  1006.             [out, size_is(1, *pulCount)] ULONG** ppulList
  1007.             );
  1008.  
  1009.  
  1010.     };
  1011.  
  1012.  
  1013.  
  1014.